package es.ucm.fdi.healthpred.vista;

import java.awt.Color;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;
import javax.swing.WindowConstants;
import javax.swing.border.Border;

import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;
import com.jgoodies.forms.layout.Sizes;
import com.toedter.calendar.JYearChooser;

import es.ucm.fdi.healthpred.controlador.Controlador;
import es.ucm.fdi.healthpred.controlador.excepciones.ExcepcionCapturaDatos;
import es.ucm.fdi.healthpred.controlador.utils.ConstantsString;
import es.ucm.fdi.healthpred.controlador.utils.StringsHP_BD;
import es.ucm.fdi.healthpred.modelo.beans.HechoClinico;
import es.ucm.fdi.healthpred.modelo.beans.Historial;
import es.ucm.fdi.healthpred.modelo.beans.HistorialId;
import es.ucm.fdi.healthpred.modelo.beans.Hobbie;
import es.ucm.fdi.healthpred.modelo.beans.HobbieId;

/**
 * Formulario para a&ntilde;adir o editar tanto hobbies como hechos
 * cl&iacute;nicos (modo).
 * 
 * @since 1.0
 * 
 * @version 1.0
 * 
 * @author &Aacute;lvaro G&oacute;mez Porris
 * @author V&iacute;ctor L&oacute;pez Monte
 * @author Carlos Rodr&iacute;guez Colliga
 * 
 */
public class FormAnadir extends JDialog {

	private static final long serialVersionUID = 1L;

	private int alto;
	private int ancho;
	private JComboBox<String> cmb1;
	private JComboBox<String> cmb2;
	private JComboBox<String> cmb3;
	private JComboBox<String> cmb4;
	private JYearChooser fecha = new JYearChooser();
	private ButtonGroup grupo = new ButtonGroup();
	private ModoAnadir modo;
	private JRadioButton rd1 = new JRadioButton();
	private JRadioButton rd2 = new JRadioButton();
	private JTextFieldDigitosFoco txtD1;
	private JTextFieldDigitosFoco txtD2;
	private JTextFieldDigitosFoco txtD3;
	private JTextFieldFoco txtFoco;

	/**
	 * @param padre
	 * @param modo
	 */
	public FormAnadir(JDialog padre, ModoAnadir modo) {
		super(padre, true);
		this.modo = modo;
		init();
	}

	/**
	 * @return
	 */
	public JComboBox<String> getCmb1() {
		return cmb1;
	}

	/**
	 * @return
	 */
	public JComboBox<String> getCmb2() {
		return cmb2;
	}

	/**
	 * @return
	 */
	public JComboBox<String> getCmb3() {
		return cmb3;
	}

	/**
	 * @return
	 */
	public JComboBox<String> getCmb4() {
		return cmb4;
	}

	/**
	 * @return
	 */
	public JYearChooser getFecha() {
		return fecha;
	}

	/**
	 * @return
	 */
	public JRadioButton getRd1() {
		return rd1;
	}

	/**
	 * @return
	 */
	public JRadioButton getRd2() {
		return rd2;
	}

	/**
	 * @return
	 */
	public JTextFieldDigitosFoco getTxtD1() {
		return txtD1;
	}

	/**
	 * @return
	 */
	public JTextFieldDigitosFoco getTxtD2() {
		return txtD2;
	}

	/**
	 * @return
	 */
	public JTextFieldDigitosFoco getTxtD3() {
		return txtD3;
	}

	/**
	 * @return
	 */
	public JTextFieldFoco getTxtFoco() {
		return txtFoco;
	}

	/**
	 * Rellena los datos de una historia.
	 * 
	 * @param historia Los datos de entrada.
	 */
	public void rellenaHistoria(Historial historia) {
		HechoClinico hecho = (HechoClinico) historia.getHechoClinico();
		if (modo == ModoAnadir.M_ED_HECHO) {
			cmb1.setSelectedItem(StringsHP_BD.tipoHechoHP(hecho.getTipo()));
			cmb2.setSelectedItem(StringsHP_BD.sistemaHechoHP(hecho.getSistema()));
			cmb3.setSelectedItem(StringsHP_BD.descripcionHechoHP(hecho
					.getDescripcion()));
			if (historia.getProcedencia().equals(ConstantsString.PROPIO)) {
				rd1.setSelected(true);
			} else {
				rd2.setSelected(true);
			}
			fecha.setValue(Integer.valueOf(historia.getFecha()));
			txtD1.setText(String.valueOf(historia.getDuracion()));
			cmb4.setSelectedItem(historia.getEstado());
		}
	}

	/**
	 * Rellena los datos de un hobbie. 
	 * 
	 * @param hobbie Los datos de entrada.
	 */
	public void rellenaHobbie(Hobbie hobbie) {
		if (modo == ModoAnadir.M_ED_HOBBIE) {
			txtFoco.setText(hobbie.getId().getNombre());
			if (hobbie.getTipo().equals(ConstantsString.INDIVIDUAL)) {
				rd1.setSelected(true);
			} else {
				rd2.setSelected(true);
			}
			cmb1.setSelectedItem(StringsHP_BD.categoriaHobbieHP(hobbie
					.getCategoria()));
			txtD1.setText(String.valueOf(hobbie.getFrecuenciaSemanal()));
			txtD2.setText(String.valueOf(hobbie.getDuracion()));
			txtD3.setText(String.valueOf(hobbie.getCosteAnual()));
		}
	}

	/**
	 * Muestra una ventana de informaci&oacute;n.
	 * 
	 * @param msg
	 * @param titulo
	 */
	public void ventanaInfo(String msg, String titulo) {
		JOptionPane.showMessageDialog(this, msg, titulo,
				JOptionPane.INFORMATION_MESSAGE, FormPrincipal.iconoAviso);
	}

	/* PRIVADOS */
	private void btnAceptarActionPerformed(ActionEvent e) {
		Historial historia;
		Hobbie hobbie;
		try {
			if (modo == ModoAnadir.M_ADD_HOBBIE) {
				compruebaDatosHobbie();
				hobbie = obtenerDatosHobbie();
				Controlador.nuevoHobbie(hobbie);
			} else if (modo == ModoAnadir.M_ED_HOBBIE) {
				compruebaDatosHobbie();
				hobbie = obtenerDatosHobbie();
				Controlador.editarHobbie(hobbie);
			} else {
				if (modo == ModoAnadir.M_ADD_HECHO) {
					compruebaDatosHistoria();
					historia = obtenerDatosHistoria();
					Controlador.nuevaHistoria(historia);
				} else {
					compruebaDatosHistoria();
					historia = obtenerDatosHistoria();
					Controlador.editarHistoria(historia);
				}
			}
		} catch (ExcepcionCapturaDatos ex) {
			ventanaInfo(ex.getMessage(), ConstantsString.TITULO_ERROR);
			System.err.println("ERROR AL AGREGAR HECHO O HOBBIE");
			ex.printStackTrace();
		}
	}

	private void btnCancelarActionPerformed(ActionEvent e) {
		Controlador.cierraVistaAnadir();
	}

	private void combo1ItemStateChanged(ItemEvent e) {
		cmb2.removeAllItems();
		String tipo = (String) cmb1.getSelectedItem();
		if (tipo.equals("Enfermedad") || tipo.equals("Operaci\u00f3n")) {
			cmb2.addItem("Muscular");
			cmb2.addItem("\u00d3seo");
			cmb2.addItem("Articular");
			cmb2.addItem("Nervioso");
			cmb2.addItem("Digestivo");
			cmb2.addItem("Excretor");
			cmb2.addItem("Inmunitario");
			cmb2.addItem("Tegumentario");
			cmb2.addItem("Reproductor");
			cmb2.addItem("Respiratorio");
			cmb2.addItem("Cardiovascular");
			cmb2.addItem("Linf\u00e1tico");
			cmb2.addItem("Mental");
		} else if (tipo.equals("Alergia")) {
			cmb2.addItem("Inmunitario");
		}

	}

	private void combo2ItemStateChanged(ItemEvent e) {
		cmb3.removeAllItems();
		String tipo = (String) cmb1.getSelectedItem();
		String sistema = (String) cmb2.getSelectedItem();
		List<HechoClinico> lista = Controlador.obtenerHechos(tipo, sistema);
		for (int i = 0; i < lista.size(); i++) {
			HechoClinico h = lista.get(i);
			cmb3.addItem(StringsHP_BD.descripcionHechoHP(h.getDescripcion()));
		}
	}

	private void compruebaDatosHistoria() throws ExcepcionCapturaDatos {
		if (grupo.getSelection() == null) {
			throw new ExcepcionCapturaDatos(ConstantsString.ERROR_TIPO_HOBBIE);
		}
		if ((fecha.getValue() < fecha.getMinimum())
				|| (fecha.getValue() > fecha.getMaximum())) {
			throw new ExcepcionCapturaDatos(
					ConstantsString.ERROR_FECHA_HECHO_MAL);
		}
		if (txtD1.getText().equals(ConstantsString.VACIO)) {
			throw new ExcepcionCapturaDatos(ConstantsString.ERROR_DURACION);
		}
		if (existeHistoria()) {
			throw new ExcepcionCapturaDatos(
					ConstantsString.ERROR_HISTORIA_REPETIDA);
		}
	}

	private void compruebaDatosHobbie() throws ExcepcionCapturaDatos {
		if (txtFoco.getText().equals(ConstantsString.VACIO)) {
			throw new ExcepcionCapturaDatos(ConstantsString.ERROR_NOMBRE_HOBBIE);
		}
		if (grupo.getSelection() == null) {
			throw new ExcepcionCapturaDatos(ConstantsString.ERROR_TIPO_HOBBIE);
		}
		if (txtD1.getText().equals(ConstantsString.VACIO)) {
			throw new ExcepcionCapturaDatos(
					ConstantsString.ERROR_FRECUENCIA_HOBBIE);
		}
		if (txtD2.getText().equals(ConstantsString.VACIO)) {
			throw new ExcepcionCapturaDatos(ConstantsString.ERROR_DURACION);
		}
		if (txtD3.getText().equals(ConstantsString.VACIO)) {
			throw new ExcepcionCapturaDatos(ConstantsString.ERROR_COSTE);
		}
		if (existeHobbie()) {
			throw new ExcepcionCapturaDatos(
					ConstantsString.ERROR_HOBBIE_REPETIDO);
		}
	}

	private boolean existeHistoria() {
		ArrayList<Object> historial = Controlador.vistaSecundaria
				.getDatosCliente().getHistorial();
		for (int i = 0; i < historial.size(); i++) {
			Historial historia = (Historial) historial.get(i);
			String tipo = StringsHP_BD.tipoHechoBD(cmb1.getSelectedItem()
					.toString());
			String sistema = StringsHP_BD.sistemaHechoBD(cmb2.getSelectedItem()
					.toString());
			String descripcion = StringsHP_BD.descripcionHechoBD(cmb3
					.getSelectedItem().toString());
			int codigo = Controlador.obtenerCodigoHecho(tipo, sistema,
					descripcion);
			if ((historia.getId().getCodigo() == codigo)
					&& ((Integer.valueOf(codigo) != Controlador.codigoHecho))) {
				return true;
			}
		}
		return false;
	}

	private boolean existeHobbie() {
		ArrayList<Object> hobbies = Controlador.vistaSecundaria
				.getDatosCliente().getHobbies();
		for (int i = 0; i < hobbies.size(); i++) {
			Hobbie hobbie = (Hobbie) hobbies.get(i);
			if ((txtFoco.getText().equals(hobbie.getId().getNombre()))
					&& (!hobbie.getId().getNombre()
							.equals(Controlador.nombreHobbie))) {
				return true;
			}
		}
		return false;
	}

	private void init() {
		FormLayout layout = new FormLayout();

		JLabel lbl1 = new JLabel();
		JLabel lbl2 = new JLabel();
		JLabel lbl3 = new JLabel();
		JLabel lbl4 = new JLabel();
		JLabel lbl5 = new JLabel();
		JLabel lbl6 = new JLabel();
		JLabel lbl7 = new JLabel();
		if ((modo == ModoAnadir.M_ADD_HECHO) || (modo == ModoAnadir.M_ED_HECHO)) {
			ancho = 330;
			alto = 530;
			layout.appendColumn(new ColumnSpec(ColumnSpec.CENTER, Sizes
					.bounded(Sizes.PREFERRED, Sizes.constant("110px", false),
							Sizes.constant("110px", false)), 0));
			layout.appendRow(new RowSpec(RowSpec.FILL, Sizes.bounded(
					Sizes.PREFERRED, Sizes.constant("15px", false),
					Sizes.constant("15px", false)), 0));
		} else {
			ancho = 390;
			alto = 330;
			layout.appendColumn(new ColumnSpec(ColumnSpec.CENTER, Sizes
					.bounded(Sizes.PREFERRED, Sizes.constant("170px", false),
							Sizes.constant("170px", false)), 0));
		}
		layout.appendColumn(new ColumnSpec(ColumnSpec.CENTER, Sizes.bounded(
				Sizes.PREFERRED, Sizes.constant("10px", false),
				Sizes.constant("10px", false)), 0));
		layout.appendColumn(new ColumnSpec(ColumnSpec.CENTER, Sizes.bounded(
				Sizes.PREFERRED, Sizes.constant("200px", false),
				Sizes.constant("200px", false)), 0));
		layout.appendColumn(new ColumnSpec(ColumnSpec.CENTER, Sizes.bounded(
				Sizes.PREFERRED, Sizes.constant("10px", false),
				Sizes.constant("10px", false)), 0));
		for (int i = 0; i < 6; i++) {
			layout.appendRow(new RowSpec(RowSpec.FILL, Sizes.bounded(
					Sizes.PREFERRED, Sizes.constant("50px", false),
					Sizes.constant("50px", false)), 0));
		}
		getContentPane().setLayout(layout);
		Border borde = BorderFactory
				.createLineBorder(new Color(216, 40, 44), 1);
		((JPanel) getContentPane()).setBorder(borde);
		setResizable(false);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		setLocation(100, 100);

		grupo.add(rd1);
		grupo.add(rd2);

		JButton btnAceptar = new JButton("Aceptar");
		btnAceptar.setToolTipText("Aceptar");
		btnAceptar.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		btnAceptar.setIcon(new ImageIcon(FormAnadir.class.getClassLoader()
				.getResource("icono_aceptar_20x20.png")));
		btnAceptar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				btnAceptarActionPerformed(e);
			}
		});

		JButton btnCancelar = new JButton("Cancelar");
		btnCancelar.setToolTipText("Cancelar");
		btnCancelar.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		btnCancelar.setIcon(new ImageIcon(FormAnadir.class.getClassLoader()
				.getResource("icono_cancelar_20x20.png")));
		btnCancelar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				btnCancelarActionPerformed(e);
			}
		});

		if ((modo == ModoAnadir.M_ADD_HOBBIE)
				|| (modo == ModoAnadir.M_ED_HOBBIE)) {
			if (modo == ModoAnadir.M_ADD_HOBBIE) {
				setTitle(ConstantsString.TITULO_ANADIR_HOBBIE);
			} else {
				setTitle(ConstantsString.TITULO_EDITAR_HOBBIE);
			}
			layout.appendRow(new RowSpec(RowSpec.CENTER, Sizes.bounded(
					Sizes.PREFERRED, Sizes.constant("30px", false),
					Sizes.constant("30px", false)), 0));
			lbl1.setText("Nombre");
			lbl2.setText("Tipo");
			lbl3.setText("Categor\u00eda");
			lbl4.setText("Frecuencia semanal (d\u00edas)");
			lbl5.setText("Duraci\u00f3n diaria (horas)");
			lbl6.setText("Coste (euros)");
			txtFoco = new JTextFieldFoco();
			rd1.setText("INDIVIDUAL");
			rd2.setText("COLECTIVO");
			cmb1 = new JComboBox<String>();
			cmb1.addItem("Juego");
			cmb1.addItem("Deporte");
			cmb1.addItem("Cultura");
			cmb1.addItem("Ocio");
			cmb1.addItem("Naturaleza");
			cmb1.addItem("Tecnolog\u00eda");
			txtD1 = new JTextFieldDigitosFoco();
			txtD1.setDocument(new JTextFieldLimite(txtD1, 1));
			txtD2 = new JTextFieldDigitosFoco();
			txtD2.setDocument(new JTextFieldLimite(txtD2, 2));
			txtD3 = new JTextFieldDigitosFoco();

			getContentPane().add(lbl1, "1, 1, right, fill");
			getContentPane().add(lbl2, "1, 2, right, fill");
			getContentPane().add(lbl3, "1, 3, right, fill");
			getContentPane().add(lbl4, "1, 4, right, fill");
			getContentPane().add(lbl5, "1, 5, right, fill");
			getContentPane().add(lbl6, "1, 6, right, fill");
			getContentPane().add(btnAceptar, "1, 7, right, fill");
			getContentPane().add(new JSeparator(), "2, 7, fill, fill");
			getContentPane().add(btnCancelar, "3, 7, left, fill");
			getContentPane().add(txtFoco, "3, 1, fill, center");
			getContentPane().add(rd1, "3, 2, left, center");
			getContentPane().add(rd2, "3, 2, right, center");
			getContentPane().add(cmb1, "3, 3, fill, center");
			getContentPane().add(txtD1, "3, 4, fill, center");
			getContentPane().add(txtD2, "3, 5, fill, center");
			getContentPane().add(txtD3, "3, 6, fill, center");
		} else {
			if (modo == ModoAnadir.M_ADD_HECHO) {
				setTitle(ConstantsString.TITULO_ANADIR_HECHO);
			} else {
				setTitle(ConstantsString.TITULO_EDITAR_HECHO);
			}
			layout.appendRow(new RowSpec(RowSpec.FILL, Sizes.bounded(
					Sizes.PREFERRED, Sizes.constant("50px", false),
					Sizes.constant("50px", false)), 0));
			layout.appendRow(new RowSpec(RowSpec.CENTER, Sizes.bounded(
					Sizes.PREFERRED, Sizes.constant("30px", false),
					Sizes.constant("30px", false)), 0));
			lbl1.setText("Tipo");
			lbl2.setText("Sistema");
			lbl3.setText("Descripci\u00f3n");
			lbl4.setText("Procedencia");
			lbl5.setText("Fecha");
			lbl6.setText("Duraci\u00f3n (d\u00edas)");
			lbl7.setText("Estado");
			cmb1 = new JComboBox<String>();
			cmb1.addItem("Alergia");
			cmb1.addItem("Enfermedad");
			cmb1.addItem("Operaci\u00f3n");
			cmb2 = new JComboBox<String>();
			cmb2.addItem("Inmunitario");
			cmb3 = new JComboBox<String>();
			cmb3.addItem("Alergia al polen");
			cmb3.addItem("Alergia al polvo");
			cmb3.addItem("Alergia a los animales");
			cmb3.addItem("Alergia a los medicamentos");
			cmb3.addItem("Alergia a las picaduras de insectos");
			cmb3.addItem("Alergia a los alimentos");
			rd1.setText("PROPIO");
			rd2.setText("FAMILIAR");
			fecha.setMinimum(1940);
			fecha.setMaximum(2012);
			fecha.adjustWidthToMaximumValue();
			txtD1 = new JTextFieldDigitosFoco();
			cmb4 = new JComboBox<String>();
			cmb4.addItem("Solucionado");
			cmb4.addItem("Latente");
			cmb4.addItem("Pasivo");
			cmb4.addItem("Activo");

			getContentPane().add(lbl1, "1, 2, right, fill");
			getContentPane().add(lbl2, "1, 3, right, fill");
			getContentPane().add(lbl3, "1, 4, right, fill");
			getContentPane().add(lbl4, "1, 5, right, fill");
			getContentPane().add(lbl5, "1, 6, right, fill");
			getContentPane().add(lbl6, "1, 7, right, fill");
			getContentPane().add(lbl7, "1, 8, right, fill");
			getContentPane().add(btnAceptar, "1, 9, right, fill");
			getContentPane().add(new JSeparator(), "2, 9, fill, fill");
			getContentPane().add(btnCancelar, "3, 9, left, fill");
			getContentPane().add(cmb1, "3, 2, fill, center");
			getContentPane().add(cmb2, "3, 3, fill, center");
			getContentPane().add(cmb3, "3, 4, fill, center");
			getContentPane().add(rd1, "3, 5, left, center");
			getContentPane().add(rd2, "3, 5, right, center");
			getContentPane().add(fecha, "3, 6, left, center");
			getContentPane().add(txtD1, "3, 7, fill, center");
			getContentPane().add(cmb4, "3, 8, fill, center");

			cmb1.addItemListener(new ItemListener() {
				public void itemStateChanged(ItemEvent e) {
					combo1ItemStateChanged(e);
				}
			});

			cmb2.addItemListener(new ItemListener() {
				public void itemStateChanged(ItemEvent e) {
					combo2ItemStateChanged(e);
				}
			});
		}
		layout.appendRow(new RowSpec(RowSpec.CENTER, Sizes.bounded(
				Sizes.PREFERRED, Sizes.constant("15px", false),
				Sizes.constant("15px", false)), 0));
		setSize(ancho, alto);

		// Cierre del JDialog con la tecla ESC
		KeyStroke escape = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false);
		Action escapeAction = new AbstractAction() {

			private static final long serialVersionUID = 1L;

			public void actionPerformed(ActionEvent e) {
				Controlador.cierraVistaAnadir();
			}
		};
		getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
				escape, "ESCAPE");
		getRootPane().getActionMap().put("ESCAPE", escapeAction);
	}

	private Historial obtenerDatosHistoria() {
		Historial historial = new Historial();
		String tipo = StringsHP_BD.tipoHechoBD(cmb1.getSelectedItem()
				.toString());
		String sistema = StringsHP_BD.sistemaHechoBD(cmb2.getSelectedItem()
				.toString());
		String descripcion = StringsHP_BD.descripcionHechoBD(cmb3
				.getSelectedItem().toString());
		int codigo = Controlador.obtenerCodigoHecho(tipo, sistema, descripcion);
		HistorialId id = new HistorialId(Controlador.dni, codigo);
		historial.setId(id);
		HechoClinico hecho = Controlador.obtenerHecho(codigo);
		historial.setHechoClinico(hecho);
		if (rd1.getSelectedObjects() != null) {
			historial.setProcedencia(ConstantsString.PROPIO);
		} else if (rd2.getSelectedObjects() != null) {
			historial.setProcedencia(ConstantsString.FAMILIAR);
		} else {
			historial.setProcedencia(ConstantsString.VACIO);
		}
		historial.setFecha(String.valueOf(fecha.getValue()));
		historial.setDuracion(Integer.valueOf(txtD1.getText()));
		historial.setEstado(cmb4.getSelectedItem().toString());
		return historial;
	}

	private Hobbie obtenerDatosHobbie() {
		Hobbie hobbie = new Hobbie();
		HobbieId id = new HobbieId(Controlador.dni, txtFoco.getText());
		hobbie.setId(id);
		hobbie.setCategoria(StringsHP_BD.categoriaHobbieBD(cmb1
				.getSelectedItem().toString()));
		hobbie.setFrecuenciaSemanal(Integer.valueOf(txtD1.getText()));
		hobbie.setDuracion(Integer.valueOf(txtD2.getText()));
		hobbie.setCosteAnual(Integer.valueOf(txtD3.getText()));
		if (rd1.getSelectedObjects() != null) {
			hobbie.setTipo(ConstantsString.INDIVIDUAL);
		} else if (rd2.getSelectedObjects() != null) {
			hobbie.setTipo(ConstantsString.COLECTIVO);
		} else {
			hobbie.setTipo(ConstantsString.VACIO);
		}
		return hobbie;
	}
}
